<?php

namespace JLPay\Services\Ledger\Bill;

use JLPay\Services\BaseService;
use JLPay\Models\Ledger\Bill\BillApplyUrlRequest;
use JLPay\Models\Ledger\Bill\BillApplyUrlResponse;

/**
 * 账单服务类
 */
class BillService extends BaseService
{
    /**
     * 获取API URL
     *
     * @param string $requestClass 请求类名
     * @param string|null $apiPath 接口路径
     * @return string 完整的API URL
     */
    public function getApiUrl(string $requestClass, ?string $apiPath = null): string
    {
        $baseUrl = $this->config->getUrl();

        if ($apiPath) {
            return $baseUrl . $apiPath;
        }

        // 直接使用请求类中定义的完整API路径
        if (defined($requestClass . '::API_URL')) {
            $apiUrl = constant($requestClass . '::API_URL');
            return $baseUrl . $apiUrl;
        }

        // 如果没有定义API_URL，使用默认路径
        return $baseUrl . '/open/ledger/bill';
    }

    /**
     * 申请账单下载URL
     *
     * @param BillApplyUrlRequest $request 请求对象
     * @return BillApplyUrlResponse 响应对象
     */
    public function applyBillUrl(BillApplyUrlRequest $request): BillApplyUrlResponse
    {
        return $this->post($request, BillApplyUrlResponse::class);
    }
} 